Conventionally, an input/output (I/O) module included in a server is coupled to one or more host-end devices via a host bus adapter (HBA). When multiple host-end devices are all coupled to the I/O module, each of the host-end devices is capable of transmitting data to the I/O module. For example, when it is desired to update a firmware file of the I/O module, each of the host-end devices may transmit an update file to the I/O module for allowing the I/O module to perform a firmware update process.
In the firmware update process, an undesirable scenario may occur when a plurality of the host-end devices simultaneously attempt to transmit data packets including parts of different update files to the I/O module. For example, a first host-end device (A) may attempt to transmit data packets that constitute a first update file, and a second host-end device (B) may attempt to transmit data packets that constitute a second update file.
In such a scenario, the I/O module attempts to store all the received data packets from both the first host-end device (A) and the second host-end device (B) into a storage device included in the I/O module, and frequent access to the storage device may incur physical damages thereto. Additionally, the capacity of the storage device may be insufficient for storing various update files from respective host-end devices (e.g., in the above example, space for two complete update files would be required). Another undesirable scenario is that in storing the data packets from different host-end devices, part of a particular update file that is stored may be inadvertently overwritten by a newly received data packet, possibly causing the update file to become incorrectly stored.